package com.shrct.businessprocess.purchase;

import com.shrct.businessprocess.organization.RCEmployee;
import com.shrct.businessprocess.project.RCProjectMoney;
import com.shrct.businessprocess.purchase.IHasPurchaseOrderProcess;
import com.shrct.businessprocess.purchase.RCBasePurchaseOrder;
import com.shrct.businessprocess.purchase.RCOrderCommissionPayRequest;
import com.shrct.businessprocess.purchase.impl.RCPurchaseOrderCommissionPayProcessImpl;
import com.shrct.businessprocess.purchase.proxy.RCPurchaseOrderCommissionPayProcessProxy;
import edu.fudan.langlab.domain.workflow.BusinessProcess;
import edu.fudan.mylang.pf.EntityImplementation;

@EntityImplementation(implementBy = RCPurchaseOrderCommissionPayProcessImpl.class)
public interface RCPurchaseOrderCommissionPayProcess extends BusinessProcess, IHasPurchaseOrderProcess {
  public abstract void start(final RCProjectMoney amount, final RCBasePurchaseOrder purchaseOrder, final Double taxRate, final String comment);
  
  public abstract void modify_cancel(final String comment);
  
  public abstract void modify_modify(final String comment);
  
  public abstract void salerAudit_agree(final String comment);
  
  public abstract void salerAudit_refuse(final String comment);
  
  public abstract void ceoAudit_agree(final String comment);
  
  public abstract void ceoAudit_refuse(final String comment);
  
  public abstract void financeLeaderAudit_agree(final String comment);
  
  public abstract void financeLeaderAudit_refuse(final String comment);
  
  public abstract void financeManPay_agree(final String comment);
  
  public abstract void financeManPay_refuse(final String comment);
  
  public abstract RCBasePurchaseOrder getPurchaseOrder();
  
  public abstract RCPurchaseOrderCommissionPayProcess setPurchaseOrder(final RCBasePurchaseOrder purchaseOrder);
  
  public abstract RCOrderCommissionPayRequest getPayRequest();
  
  public abstract RCPurchaseOrderCommissionPayProcess setPayRequest(final RCOrderCommissionPayRequest payRequest);
  
  public abstract RCEmployee getStarter();
  
  public abstract RCPurchaseOrderCommissionPayProcess setStarter(final RCEmployee starter);
  
  public abstract RCPurchaseOrderCommissionPayProcessProxy toProxy();
}
